iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 22
1
自我挑戰組

Android App 初學者從零開始用Kotlin寫APP系列 第 22

<Day22> LiveData-MediatorLiveData

  • 分享至 

  • xImage
  •  

引用
MediatorLiveData 是 LiveData 的子類,可以通過 MediatorLiveData 合併多個 LiveData 資料。其中任意一個 LiveData 資料發生變化,MediatorLiveData 會通知觀察他的對象。

MediatorLiveData 說明:
MediatorLiveData
引用

動手改用MutableLiveData

使用 MutableLiveData

class TodoViewModel : ViewModel() {

    val onNewTodo = MutableLiveData<Unit>()
    private var count = 0
    
    val todoLiveData: LiveData<List<Todo>> = MediatorLiveData<List<Todo>>().apply {
        addSource(onNewTodo) {
            val todo = Todo.Item("note $count", false)
            this.value = this.value!! + listOf(todo)
            count++
        }
        value = mutableListOf(Todo.Title("This is a title"))
    }


}

view call todoViewModel.addNewTodo 來 postValue


class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        ......

        val adapter = TodoAdapter()
        .....

        val todoViewModel = ViewModelProvider(this).get<TodoViewModel>()

         ......
        buttonAdd.setOnClickListener {
            todoViewModel.addNewTodo.postValue(Unit)
        }
    }
}

reference:https://developer.android.com/reference/android/arch/lifecycle/MutableLiveData
reference:https://ithelp.ithome.com.tw/articles/10222799
reference:https://www.notion.so/LiveData-and-viewModel-9-2-bfb163f6dbfc4a71b2388538514de089


上一篇
<Day21>LiveData
下一篇
<Day23>Navigation component(一)
系列文
Android App 初學者從零開始用Kotlin寫APP30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言